home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume90 / libraris / reqlib12 / part02 < prev    next >
Encoding:
Internet Message Format  |  1990-09-28  |  52.3 KB

  1. Path: abcfd20.larc.nasa.gov!amiga-request
  2. From: amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
  3. Subject: v90i260: requester.library 1.2 - requester library, Part02/03
  4. Reply-To: Paul-Erik Raue <peraue@cs.vu.nl>
  5. Newsgroups: comp.sources.amiga
  6. Message-ID: <comp.sources.amiga:v90i260@abcfd20.larc.nasa.gov>
  7. References: <comp.sources.amiga:v90i259@abcfd20.larc.nasa.gov>
  8. Date: 28 Sep 90 18:45:47 GMT
  9. Approved: tadguy@uunet.UU.NET (Tad Guy)
  10. X-Mail-Submissions-To: amiga@uunet.uu.net
  11. X-Post-Discussions-To: comp.sys.amiga
  12.  
  13. Submitted-by: Paul-Erik Raue <peraue@cs.vu.nl>
  14. Posting-number: Volume 90, Issue 260
  15. Archive-name: libraries/reqlib-1.2/part02
  16.  
  17. #!/bin/sh
  18. # This is a shell archive.  Remove anything before this line, then unpack
  19. # it by saving it into a file and typing "sh file".  To overwrite existing
  20. # files, type "sh file -c".  You can also feed this as standard input via
  21. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  22. # will see the following message at the end:
  23. #        "End of archive 2 (of 3)."
  24. # Contents:  req.library.uu reqbase.i showoffreq.c
  25. # Wrapped by tadguy@abcfd20 on Fri Sep 28 14:45:30 1990
  26. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  27. if test -f 'req.library.uu' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'req.library.uu'\"
  29. else
  30. echo shar: Extracting \"'req.library.uu'\" \(20030 characters\)
  31. sed "s/^X//" >'req.library.uu' <<'END_OF_FILE'
  32. Xbegin 666 req.library
  33. XM```#\P`````````#``````````(```V?``````````$```/I```-GW``3G5*]
  34. XM_`````0```\R@`$)`````!X````J````@')E<2YL:6)R87)Y`%)E<2`Q+C(@W
  35. XM*$IU;"`Q,R`Q.3@Y*0T*`&1O<RYL:6)R87)Y`&EN='5I=&EO;BYL:6)R87)Y!
  36. XM`&=R87!H:6-S+FQI8G)A<GD`8V]N<V]L92YD979I8V4`````1````)````$4N
  37. XM```!0````FX```)\```"D````L````+$```#2@```W8```.@```'O@``!]H`8
  38. XM``@"```!Z@```>H``"::```KA@``"_@```=4```,/@``$8@```UT```&Q```=
  39. XM"!P```B>```-F@``#:@```VV```)7```-1````/6```)"```#<P`````____3
  40. XM_^````P)`,````H````>X```#@8`T```%``!T```%@`"P```&````"H`````?
  41. XM2.<!!"I`*TX`(BM(`#)"K0`F0JT`*D*M`"Y"K0`V0JT`/$/Z_MYP`$ZN_=@K^
  42. XM0``F9P``BD/Z_MAP(4ZN_=@K0``J9WA#^O[:<`!.KOW8*T``+F=H(#P```#$>
  43. XM<@).KO\Z*T``-F=.($!#^@RN,CP`PQ#94<G__'`P(CP``0``3J[_.BM``$!G+
  44. XM+")`0?K^I7#_<@!.KOY$2H!F$B!M`$`K:``4`#P@#4S?((!.=2X\@`2`$6`.E
  45. XM+CP``0``8`8N/``#```O#9O-3J[_E"I?801P`*.<@"$GM`"9T`B)<(`EGZ
  46. XM!$ZN_F)1RO_T3-\0!")M`$`@"6<$3J[^/B)M`$`@"6<&<#!.KO\N(FT`-B`)D
  47. XM9PH@/````,1.KO\N<``B33`M`!"3P-!M`!).KO\N3G52;@`@"*X``P`.(`Y.W
  48. XM=7``4VX`(&8*""X``P`.9P)A`DYU2.<@!BI.+'@`!$IM`"!G"@CM``,`#G``_
  49. XM8!`D+0`R(DU.KO\$80#_7"`"3-]@!$YU<`!.=4CG__Z>_``4+&X`*DCGP(!P!
  50. XM%#(H`"XB:``>0>\`#$ZN_E9,WP$#2D!F!C`H``3B2&X$T&@`!#0O`!*40&P"@
  51. XM0D(P+P`,D&@`!+1`8P(T`#""2D%F!C(H``;B26X$TF@`!C8O`!"606P"0D,R/
  52. XM+P`.DF@`!K9!8P(V`3%#``+>_``43-]__TYU2.=@`$J`9R#"_/__8`3BB.*)U
  53. XM)`!(0$I`9O0P`H+`<``P`4S?``9.=7#_8/9(YS``2H)G'I"!8`3BB.**)@!('
  54. XM0TI#9O1(0H3`(`)3@$S?``Q.=7``8/9(YQP`0H520"@`F(%O(#H"2$3*Q#8"O
  55. XM2$3&Q$I#:@K6O``!``!F`E*%0D-(0]J#(`5,WP`X3G5(YW_^GOP!E"A.(D\P3
  56. XM/`#)0EE1R/_\0]=P%C+84<C__"!)1>\`#$?O`6)P!70"(EHJ"6<>3KH)CC%"E
  57. XM`"8R*``*5D$W00`&1$$Q00`&`&@`"``,T/P`9%'*_]:;S4ZZ"4`_00&2(#P`@
  58. XM`!.(<@%(02QX``1.KO\Z+T`!6BX`9P`!I"!7(F\`!"1`(`EG!F$``UI@!!38,
  59. XM9OP@1RQ,80`!^-!\``S4?``2-B\`FM9O`/[6;P`VUGP`&+9`8P(P`S=```35:
  60. XM:P`&,@"2;P#^6T$_00#ZD&\`-I!O`/[0;P":XD@_0``R(&\`"")+3KHEJ!`OV
  61. XM`"$70``($B\`(Q=!``F"`&8&%WP``0`))WP```9```HG?``"$`8`#B=O`!@`Z
  62. XM&B)K`!(@"68.`*L````(``YP$'($8!HP*0`(XDC0:0`$,BD`"N))TFD`!M)K=
  63. XM``9302!+80#]GBQN`"H@2TZN_S0J0$J`9P1A``#:("\!6F<0(D`@/```$X@L?
  64. XM>``$3J[_+B`-9P``HB!M`%9.KOZ`(&T`5DZN_HPB0"0I`!0V*0`8."D`&B1IC
  65. XM`!Q.KOZ&<``(`@`)9G((`@`&9P8P*@`F8&9*`VO"#&___P`<9P;(;P`<9[2V:
  66. XM/`!%9T[!0S($PGS_^"!*+$Q.KO]&P4.V/`!N9S:V/`!Q9S"V/`!B9RJV/`!L&
  67. XM9R1P`;8\`'EG'+8\`'9G%K8\`')G$'`"MCP`;6<(+&P`(F``_V(O`"`-9PH@2
  68. XM32QL`"I.KO^X(!_>_`&43-]__DYU2.<?_BQL`"YP`#`O`%)F`G`!(FT`,DZND
  69. XM_JH@1R)M`#)Z%&%H2.>`P$CG@,!P!B(%3J[_$$S?`P%21=IO`=)*0&<$3J[__
  70. XMQ$S?`P'0P$H89M),WW_X3G5(YQP`=@!X`'H`(@AG(F$^T,)21+9`8@(V`$H8A
  71. XM9O!A``;J.@3*[P&BVD0P`S($-`5,WP`X3G5(YT"`</]20`P0``IG!$H89O1,P
  72. XMWP$"3G5AYC0`80`&ML#"3G5(Y_SX*$@F23E```0Y00`&($MAX#E```@Y00`*R
  73. XM.7P````,.7P``0`..7P``0`00>P`+"E(`!+0_``0*4@`-!E\``4`,QE\``,`-
  74. XM,'#^.4``+#E``"XP+``(5D`R+``*5D%A'"E(`!HA2P`,$+P``4(H``$1?``!I
  75. XM``),WQ\_3G5"F##`0E@PP##!0E@PP4*83G5(Y_CX1^@`+"%+`!(G20`*,7P`:
  76. XM`0`0,7P`!``,,7P``0`.,4``"#%!``IV`"@*9R!V`BA+V/P`%"%,`!8I2@`*!
  77. XM.4``!#E!``8Y0@`(4.P`#H=H``PW0``$-T$`!C="``A0ZP`.3-\?'TYU2.<`C
  78. XM\B9*1?H`$"QX``1.KOWV3-]/`$YU%L!.=4CG`,(L>``$D\E.KO[:($!P``PHK
  79. XM``T`"&8(("@`N&X"<`!,WT,`3G4O#BQX``0O")/)3J[^VB)`(%\C2`"X+%].]
  80. XM=4CG^/`Q0``(,4$`-B%)`"PA2@`P,4(`!#%#``9A``4Z,4$`"C%\````##%\1
  81. XM``$`#D/H`"PA20`B0^@`4"%)`!(Q?``$`!`B2$'H`%!'Z``0(4L`"!%\``4`2
  82. XM!Q%\``,`!'#^,(`Q0``","D`"%9`,BD`"EA!T/P`$&$`_JQ,WP\?3G5(Y^#`S
  83. XM(D@Q0``(,4$`"C%"``PQ?``"``[2_``L(4D`(M+\`!8A20`2,7P``P`03-\#O
  84. XM!TYU)6QD`%1O;R!S;6%L;"$`5&]O(&QA<F=E(0!'970@82!N=6UB97(`1V5TS
  85. XM('-O;64@=&5X=```2.=__BI.*$@@/````A9R`4A!+&T`(DZN_SHF0$J`9U90J
  86. XMZP%X0?K_I$/L``1%ZP%Z""P````=9@1A`/Y\0?K_IB=(`;I!ZP%Z(E1P#'(,7
  87. XM)&P`%&`B2.=__DCGP,`J3B`\```"%G(!2$$L;0`B3J[_.B9`3-\#`W@`)`MG^
  88. XM``)L+$TG2@(22JL!NF8(1?K_92=*`;HW00%V-T$!<M-K`7(G20`:)T@!;$BGY
  89. XMP`!.N@/`P-\R'T'K`/AT"'8080`#Y#=\``$!'C=\`"T`!C`K`0#0?``0-T``1
  90. XM!!=\``(`"!=\``$`"2=\``0#2``*)WP``A`.``XW?``!`"Y!ZP`P0_H%%B1+0
  91. XM<`5R*9)K`0)A``.&-WP``0!60>L`E$/Z!0%A``-T2FL!>&<2`&L(``$&)VP`3
  92. XM!`%`!FL`<P`$,"L`G-!K`#C0?``0L&L`!&,$-T``!#`K`)Q:0$1`T&L`!#=`_
  93. XM`)@@:P(2(DI.NA_Z<.-R^"!+80#X3"`K`7!R`4A!+&T`(DZN_SHG0`$D9P`!M
  94. XM5")`T*L!="=``2@@:P%L$MAF_$'Z!@Y#ZP&^<`XRV%'(__PG:P&Z`<Q#ZP'<W
  95. XM1>L!T$)`<EI!^@7F=$Q.NA_>+&T`*B!+3J[_-$J`9P``]B1`($!#ZP&^3J[^I
  96. XM^"\*0>L`^")*+$U.N@,<)%\L;0`B(&H`5DZN_H`@:@!63J[^C"!`<AE#ZP&&_
  97. XM,MA1R?_\(D!.KOZ&("L!F@@```EF>`@```AG#C`K`9[J2,!\`#]G9F"J"```A
  98. XM!F>D(&L!HC@H`"9G5$IK`7AG4"!K`21*$&=&+&T`+B)J`#)P?UR`<A#2:0`^G
  99. XM3J[_$$'Z_5XB*P%`LJP`"&T*LJP`#&\>0?K]52)J`#)P"DZN_\0L;0`JD<A.Q
  100. XMKO^@8`#_2$)$($HL;0`J3J[_RB!*3J[_N$I$9Q@@:P$D(FL!;!+89OQ*:P%XZ
  101. XM9P8I:P%``!`L;0`B("L!<")K`21.KO\N(#P```(6(DM.KO\N(`1,WW_^3G5(%
  102. XMY__^*DXF23X#/`(Z`3@`+&T`+DZN_Q`P!C(%(DM.KO\*,`8R!R)+3J[_"C`$#
  103. XM,@<B2TZN_PHP!#(%(DM.KO\*3-]__TYU2.?_\"@`.@$\`CX#)D@B;@`V"`0`T
  104. XM$&8$TOP`*)7*<!!R"G84"`0`$&8&<`IR"782=`%.KO^:`&L``@`.%WP``0`ZM
  105. XM0BL`.T'K`$#2PTZN_YH`:P`"`$X7?``!`'I"*P![0>L`@`@$`!!G"C(%DGP`M
  106. XM%'`08`@P!9!\`!1R"70`3J[_=@!K``(`CD'K`$`FB$'K`(`G2`!`0I!P!0@$T
  107. XM`!!F`G`#-T``K'#_-T``LC=``+0P!(%K`(S`?/^?@6L`#(%K`$PW1@`$-T<`&
  108. XM!C=&`$0W1P!&"`0`$&8LVVL`1`1K``H`1#=&`(0&:P`*`(0W1P"&,`3`?``@4
  109. XM9S@`:P`0`$R!:P",8"S;:P!&!&L`"@!&-T<`A@9K``H`AC=&`(0P!,!\`$!G2
  110. XM#`!K``@`3`!K`$``C$S?#_].=4CG/_Y53R!/<`(L;@`J3J[_?$)!$A]P"+)\$
  111. XM``EF`G`*3-]__$YU80#Y*""K`!(G2``23G5A`/IR(*L`$B=(`!).=6$`^N8@&
  112. XMJP`2)T@`$C%#``0Q1``&3G5(YV#N3E3_ZBI.)$@B3W0*0EE1RO_\($\1?``!]
  113. XM``0Q0``&,4$`""%*``I53R)/<@&5RBQM`#Q.KO_0<``0%U1/3EQ,WW<&3G5((
  114. XMY__^*DY^`F`<+&T`+DZN_O).KO[R3J[^\DZN_O).KO[R3J[^\I7*+&T`*DCGX
  115. XM`,!.KOXR3-\#`$J`5L__SDS??_].=?Y__#_YG_//X8?]O_V__;_]O_P__#_]?
  116. XMO_V__;_]O^&'\\_YG_P__G_WP.?`Q\"0`#^`D`#'P.?`]\#[P/G`^,`"0'\`#
  117. XM`D#XP/G`^\#___@_^9_YG_F?^#_Y/_F?^9_______#_YG_F?^?_Y'_D?^9_\M
  118. XM/______X/_F?^9_X/_@_^9_YG_@_______F?^9_YG_@?^!_YG_F?^9______M
  119. XM_#_YG_G__#__G_F?^9_\/______SS_//\\_[W_F?^9_]O_Y___\@($]K("``,
  120. XM0V%N8V5L`%)E<W5M90``1')A=V5R($9I;&4@2&ED95-H;W=&;VYT(&YA;653B
  121. XM:7IE($]K(2``1V5T($1I<@!&;W)G970@:70`4&%R96YT`"!(:61E("YI;F9OD
  122. XM(&9I;&5S("``1&ES<&QA>2`N:6YF;R!F:6QE<P!3=&]P(&1I<B!R96%D`"AD#
  123. XM:7(I`"HN:6YF;P`J+F9O;G0`+BX@("`@`"!$;VYE+@`E9"!F;VYT<R!S:&]W[
  124. XM;BX@("``)60@<VAO=VXL("5D(&AI9&1E;BXE<R`@("`@`$-O=6QD;B=T(')E2
  125. XM860@9&ER96-T;W)Y+B`@("`@`$-/3@!005(`4%)4`%)!32!$25-+`%9$,`!2(
  126. XM05<`4T52`%-014%+``!0871C:"!A<F5A(&9O<B!F:6QT97)I;F<@9&5V:6-EZ
  127. XM(&YA;65S+@!:97)O('1E<FUI;F%T92!S=')I;F=S(&%N9"!T:&4@;&ES="X`3
  128. XM1FEL92!R97%U97-T97(`4&%R96YT`%1O9V=L92`N:6YF;P!,96%V90``````S
  129. XM``,```!^``H``0`````````````````````O"4'M!0PB2$H09RI*&&;\4T@,#
  130. XM*``Z__]G'`PH`"___V8"4TBSR&<.#"@`.O__9P8,(``O9NXB7TYU+&T!;"(M8
  131. XM!HAG]$*M!HA.[O^F2.?__BQX``0B4B`)9Q(P*0`$T'P`#4C`))%.KO\N8.A,A
  132. XMWW__3G5%[``<8=1%[``@8<Y%[``(8<A![``<*4@`)$*43G5(Y__^1>@`R&&RO
  133. XM1>@`S&&L1>@`=&&F2^CZ2"QN`"9ACDS??_].=4CG__YAU"QX``0@/````00B*
  134. XM:`%80J@!6"()9P1.KO\N3-]__TYU+&T!<$'L`+0B;0:,E<IP!7(`=`!V`'C_B
  135. XM>@%.[OXL2.?__B)M!HR5RG`!+&T!<$ZN_E!,WW__3G5(Y__^+&T!=")M!K!PM
  136. XM`$ZN_JI,K``/`"@B;0:P3J[^SDS??_].=4CG__YAG$*L``Q"K``00FP`&&'&:
  137. XM3KK_(DZZ_N9.N@:"+&T!;$'M!0PB"'3^3J[_K"M`!HAG9"(`)!5.KO^:2H!G2
  138. XM6"!50^@`A$7M`&0DV239)-E*J``$:PY![04,0^T`V!+89OQ@;DZZ_EY*$&8$!
  139. XM0>T%#`P0`"]F`D(8)$A#[060$MAF_$(20>T#L$ZZ_S1![0,\3KK_+&``_WQ."
  140. XMNOYD+&T!=")M!K`P+0:@2,!.KOZJ<``B;0:P3J[^I'`&<A0B;0:P3J[_$$'ZX
  141. XM_25P'2)M!K!.KO_$3-]__TYU0>T#L"QM`7@B;0:,8`#[(`@M``,`)6;H0>T#*
  142. XM/&#F0>T$F&#@0>T$)&#:2,!(P4C"2,-(Y_``(DI.KO\0(DH@+P`((B\`!$ZNL
  143. XM_PHB2B`O``@B+P`,3J[_"B)*(!<B+P`,3J[_"B)*(!<B+P`$3J[_"DS?``].X
  144. XM=55`54%40E)#8*HB`$)!2$&"_``*-``P`3("2$""_``*,`%(0=)\`#`3`4J`*
  145. XM9MQ.=4CG__XD2"QM`70B`-)L`"HP+``H2,`B;0:PTFD`/DZN_Q`P+0:22FH`S
  146. XM"FL.,"T&E$IJ``IG!#`M!I`(+0`#`"5G$#`M!I9#[0;4N<EG!#`M!IA(P")ML
  147. XM!K!.KOZJ<``B;0:P3J[^I")L``@@"6<*L>D`"&<*(E%@\K'L``QF"G`%(FT&8
  148. XML$ZN_IY'Z@`,0^T*IB!)$MMF_%-))DC6[``P2FH`"F<*""T``P`E9@)=2[?)U
  149. XM90(F22)(TNP`,!;\`""SRV+X""T``P`E9B!*:@`*:PYG&%M)1_K[1A+;9OQ@F
  150. XM#"`J``9.NO[V$SP`(#`L`#!(P")M!K!.KO_$<`$B;0:P3J[^GDS??_].=2\)1
  151. XM<``B;``<8`JR_```9PPB45)`L<EF\B)?3G5P_R)?3G5AW)!L`!AK\+!L`#)D1
  152. XMZL#M!JY@`/["L&T&=&X6M&T&=&T0LFT&=FX*MFT&=FT$<`%.=7``3G5(Y_#`'
  153. XM("P`$"(L`!0D+09X)BT&?"QM`7!.KO^:2D!,WP,/3G5*$&<:%-AF_%.*#"H`'
  154. XM.O__9PP,*@`O__]G!!3\`"\4V6;\3G5(Y__^2>T'WDZZ_`9![04,(FT&X-+\=
  155. XM``Q%[0JF)DIAO$'Z^F!3BA389OPL;0%L(@LD/````^U.KO_B+@!G``"2(@<D/
  156. XM"W8$3J[_UK!\``1F=@Q3#P!F<#PK``(L;0%L(@<D"R8\```!!$ZN_]:P?`$$6
  157. XM9E1P`'`-T&P`,'(!2$$L>``$3J[_.DJ`9SP@0#%L`#``!#%\__\`"E)4(*P`Q
  158. XM'"E(`!Q#Z``,,"P`,&`$$OP`(%'(__HA:P$```9P`#`K`0!.NOUP8)0L;0%L>
  159. XM(@=.KO_<3KH$A$S??_].=4CG__X,;0!H!FQF``&R3*T`#P;\3KK^J&823*T`]
  160. XM#P@&3KK^G&<``9A)[0?>,"T&=I!L`"J`[0:N/@#0;``8L%1D``%\3KH"/DIHK
  161. XM``IK``$&)D@D;0:P.#SP\#`L`"@R!\+M!J[2;``J-"P`+#8!UFT&K$BG\`#B&
  162. XM7#5$`"(@;0:,.V@`#@9T.V@`#`9V3)<`#TZZ_BQF""!+3KK^#F`B+&T!=$ZN)
  163. XM_O(B2G`#3J[^JB)*<`%.KOZD3)<`#U-#3KK\1$ZZ#KAF"@@Y``8`O^`!9Z8@0
  164. XM2TZZ_=1,GP`/3KK]XF<``-Y!ZP`,0^T%##`\`()*:P`*9C1#^OA4""T``P`EP
  165. XM9R@@;``,(`AG"$*L``Q.NOV:*4L`#"!+3KK]D$*M!^IA`/X&3-]__TYUP4E%7
  166. XM[0JF3KK]TD'M"J9"*`""0^T%#!+89OQ![0.P3KKZ=DGM!M1.NOJN8&HB;``,(
  167. XM""T``0`E9PH\+09NS'P``V9>1>P`"$J29PA.NOF<3KH!JK/(9@A.NOU>9@`1/
  168. XMAB`)9PS!24*L``Q.NOT6P4DI;09X`!`I;09\`!0I2``,3KK]`-#\``Q#[060Z
  169. XM$MAF_$'M`SQ.NOH"3KK[*$S??_].=2`)9PI"K``,PTAA.L-((FP`""`)9PJQZ
  170. XMZ0`(9Q0B46#R820I;09X`!`I;09\`!1@QDZZ_.1F`!$,*6T&>``0*6T&?``4G
  171. XM8+!(Y__^)$@P+0`:1^P`""(39PA30&=:)D%@]'``,"@`!-!\``UR`4A!+'@`2
  172. XM!$ZN_SI*@&<\($`Q:@`$``0A2@`(0^@`#$WJ``P2WF;\3>T%D$H69A1#Z``,(
  173. XM'-EF_"\(0>T#/$ZZ^4P@7R:(($I.NOPL3-]__TYU+P`@;``<8`(@4%'(__P@8
  174. XM'TYU8>PP`6``^N)(Y__^+&T!<$'M":Q#[0FP3J[_K$'Z]OI*K0:(9@1!^O;W'
  175. XM*T@&V'0=0?KW!P@M``,`)6<&0?KVZ'010^T&U$7M"J8L;0%X3KKNRBQM`70BQ
  176. XM;0:P,"T&H$C`3J[^JG``(FT&L$ZN_J1P!G(4(FT&L$ZN_Q`@2B`"(FT&L$ZN^
  177. XM_\1,WW__3G5(Y__^,A2R;``R;00R+``R,"P`&$ZZ_TQP`&`*3KKZ/M!M!JX@D
  178. XM4%')__1.NO]03-]__TYU(D@D4"12(`IG#"12(E$@"F<$)%)@\"110I$B2DYU,
  179. XM.BD`"KIH``IF''C?1^@`#$WI``P2&Q0>%@*&`6<(P@3$!+0!9^Y.=2`(8=1M!
  180. XM!B1((%!@!"1)(E$@"B((9Q@B"6<48;QM""2()$@@4&`&)(DD22)18.0B"&8$$
  181. XM)(E@`B2(3G4O"2`(9Q)*D&<.3KK_=&'PP4EA[&&P($`B7TYU2.?__DIL`!IF@
  182. XM,`@M``D`)&8H(&P`'&',*4@`'%#L`!I.NO\.1>P`'"E*`"0P%&<*4T!.NOY>]
  183. XM*4@`)$S??_].=4CG__YX_W0`-A0R+``RLD-D,C@!2$1"1(C#ED$T+``82$)"N
  184. XM0H3#:`)T_RQM`7!![`"T(FT&C)7*<`5R`'8`>@%.KOXL3-]__TYU,!20;``RM
  185. XM:@)"0+!L`!AL!#E``!A*0&X(3KKW0DZZ]P9";``:3KK_4$ZZ_GQ@B"!?<`%.P
  186. XM=0@M``,`)6<F+PA*:``*:EQ":``*T/P`#$/Z]-U.NAF>9TH@7S`H``1",``'V
  187. XM8,Y*:``*:L@O"-#\``P(+0```"5F"D/Z]*Q.NAET9B!#[0"<3KH9:F<60^T`Q
  188. XM?$H19YQ.NAE<"$```$I`(%].=7``(%].=2`+9_HF4R!`881G#""L`!PI2``</
  189. XM4E1@Z""L`"`I2``@4FP``F#:2.?__B1L`"`F;``<0JP`($*L`!Q"E&'")DIA1
  190. XMODZZ_Q9,WW__3G5(Y__^(D@D2$H99OR3R"`)4X`D`-!\``TL>``$<@%(04ZN"
  191. XM_SI*@&<``*0@0#%"``0B52%I`'P`!C%\``$`"DII``1J!$1H``I#Z``,$MIF$
  192. XM_$ZZ_O!F#B"L`"`I2``@4FP``F`D)&P`)"2(*4@`)#`4L&P`,F0(P.T&KDZZ#
  193. XM]Y125$)L`!IT`6`"=``L;0%P0>T)M$/M";A.KO^L("T)M"(M";B0K0FLDJT)E
  194. XML&P(TKP`F):`4X!*@&X(LKP``8:@;0Q*0F<$3KK]_DZZ_&9,WW__3G5(Y__^]
  195. XM+&T!;"(M!H@D%4ZN_Y1*@&8.3KKTIDZZ_=9.NOP^8`@@55!(3KK_!$S??_].?
  196. XM=4ZZ]%!*$&8(3KKU7&``_?Q"$$'M`[!.NO4T8`#U<`@M``0`)6?80?KRW@AM!
  197. XM````)6<$0?KROBM(!DQ![07P3KKU#$ZZ]C)@`/Z.2.?__C`M!FSJ2,!\`#]3#
  198. XM0&P$8:)@#E-`;`1AN&`&4T!M``PF3-]__TYU.6T!A@`83KKTZF``_#!*K0:(]
  199. XM9R`Y;0&&`!@O#$GM!M1.NO\X*%]![0&$,6P`&``",50`!DYU2.?__DBG\`!P0
  200. XM`"("3*P`/``H+&T!=")M!K!.KOYT3)\`#U-#:Q1.NOM`,`%.NO8T(%#0;0:N7
  201. XM4<O_]$S??_].=4'M`80Q;``8``(Q5``&,6T&K@`(,6P`,@`,0^P`M"%)``Y##
  202. XM^O]F(4D`$D/Z_VPA20`60_K_C"%)`!HL;0%X3KH79CEM`88`&$YU0>T%L$/M!
  203. XM`'RS"&8:2BC__V;V0>T%T$/M`)RS"&8(2BC__V;V3G5![06P0^T`?!+89OQ!F
  204. XM[0700^T`G!+89OQ@`/UB(&T&<#`H`"910&8,3KK[_&$`_V)@`/3J4T!F%$ZZQ
  205. XM^^Q)[0?>3KK_3DGM!M1@`/32L'P``VT&2>T'WE5`T$!70$ZZ^\A";0;*,BP`N
  206. XM&-)`;3S2;``RLE1N--%L`!A.NOOLD6P`&#\`80#_#'(!2FT&RF8&4.T&RG(';
  207. XM+&T!;$ZN_SHP'R!M!G!**``-:[Q)[0;48`#T;B!M!G`P*``F4T!M``J"4T!L1
  208. XM"$ZZ\VY@`/144T!M``IJ4T!L"$ZZ_=!@`/1"4T!L*#`M!F[`?``S9@A.NO-&5
  209. XM8`#T+,!\`#!G`/0D""T`!0`E9@#T&F``]"I30&PB,"T&;L!\`#-G``HHP'P`R
  210. XM,&<`\^X(+0`%`"5F`//D8`#S_E-`;`AA`/V08`#SY%-`;!QA`/KF,"T&;L!\Z
  211. XM`#-G`//0P'P`,&8`\[A@`//24T!L'&$`^L8P+09NP'P`,V<`\[#`?``P9@#S*
  212. XMJ&``\[A.=4CG__X(+0`#`"5F``"J2>T'WDZZ\=I'[0?Z(&T!;"!H`"(@:``8V
  213. XMT<C1R"AH``39S-G,)&P`*-7*U<IP`!`:0_KP@4H19RP@2C8`+PE@$!(8PCP`L
  214. XMWQ09Q#P`W[0!9@Q1R__N2A%F!")?8$0B7TH99OQ@T%)`-`#0?``-+'@`!'(!U
  215. XM2$%.KO\Z2H!G+"!`,4(`!$)H``K0_``,$-I1RO_\$7P`.O_^0B`F@"9`4FT'V
  216. XMWBA4(`QF`/]Z*TL(`DGM!]Y.NOIT3-]__TYU,"P`,F8"<`ZP?``$;`)P!#M`C
  217. XM!P8[0`@0,"P`,&8"<!ZP?``,;`)P##E``#!'[0F\)VT`!@`:$"T`,1=```@2Y
  218. XM+0`S%T$`"8(`9@87?``!``DG?``$AV@`"B=\```0#@`.""T`"@`D9P@G?```P
  219. XM$`@`#C(M!JPP05!(.T@&O$'P$`,[2`:^0?`0!CM(!L`P+0:NP.P`,D'P``4[`
  220. XM2`;"""T``P`E9@A!\!`&.T@&Q$'P$`<[2`;&0?`0!3=(``8[2`:Z,BT&JC!\/
  221. XM``<[2`;,,`'`[0<$0?```CM(!LY!Z``2.T@&T#`!P.T(#D'P``([2`;20>@`.
  222. XM%3=(``0[2`:X.VT&S`;\.VT&P`;^.VT&S@<`5VT'`#MM!L('`EUM!P([;0;`/
  223. XM"`@[;0;0"`8[;0;2"`I7;0@*.VT'`@@,+&T!>$'M`:Q#^NWS,"T&S#(M!L9.[
  224. XMN@F8,7P````F0>T"=$/Z[>=P]\'M!JI?0-!K``0R+0;&3KH)=C%\``(`)G#ZW
  225. XM""T``P`E9@P(+0`%`"5F!-!\__7![0:JT'S_[`@M``4`)68$T'S_\-!M!KA(T
  226. XMP(#M!JH[0`;(P.T&JD'M`[!#[04,1>T)['0&,CP`@\3M!JK4;0;,5D(V+0;"N
  227. XM3KH)!#%\``0`)@@M``,`)68``/Y![0+80_KM7S`M!LPR+0:^3KH([#%\``,`\
  228. XM)D'M`SQ#[0601>T)[#`M!LBP?``?8P)P'\#M!JIR'S0M`[0V+0;$3KH(L#%\)
  229. XM``4`)D'M`A!#^NT#</7![0:JT&T&N.)(,BT&QDZZ")HQ?``!`"8(+0`%`"5FN
  230. XM4D'M!"1#[06P1>T)['`'P.T&JG(?-`!$0E]"U&T&N#8M!L).N@A:,7P`!P`FB
  231. XM0>T$F$/M!=!%[0GL<`?`[0:J<A\T+00H-BT&Q$ZZ"#0Q?``(`"8(+0`$`"5GY
  232. XM+D'M!?!#^NR8""T````E9P1#^NR@<.W![0:J7T#0:P`$,BT&ODZZ"`HQ?``&I
  233. XM`"9![0<((#P``0``,BP`,L+M!JY6030M!LXV+0;`54-.NND<.WP``@>6*VL`Y
  234. XM$@>(0>T'""=(`!([?``(!ZX[?``*!RX[?``+!VY![0@2(#P``0``,BP`,L+MD
  235. XM!JY6030M!M(V+0;`54-.NNC4.WP``@B@*VL`$@B20>T($B=(`!([?``)"+@[P
  236. XM?``,"#@[?``-"'@@;0`6(DM.N@;.,"T`<#(M`'(@2RQM`7A.NM\8""T`!@`ER
  237. XM9PHVK0!P-VT`<@`"+&T!<"!+3J[_-$J`9DQ"JP`24VP`,@QL``4`,F46#&L`-
  238. XM`0`N9R`@:P`>,"@`#+!K``1N$E-L`#!?;0@.;`1";0@.7&T(#C`L`#+0;``P!
  239. XML'P`$&P`_`I@``3P*T`&C"!`*V@`,@:P*V@`5@:T0^T([$[N_O@D;0:P+&T!T
  240. XM=")*,"T&IDC`3J[^JDRM``\&_$ZZ[PQ,K0`/"`9.NN\"(DHP+0:B2,!.KOZJ.
  241. XM(DIP!3(M`[;2:0`^2,%.KO\0(DI!^NJT<`9.KO_$""T``P`E9GHB2G`%,BT#`
  242. XM0M)I`#Y(P4ZN_Q`B2D'ZZI1P!DZN_\0(+0`%`"5F``"6(DIP_,'M!JK0;00HC
  243. XM6T`R+0.VTFD`/DC!3J[_$")*0?KJ:'`$3J[_Q")*</S![0:JT&T$G%M`,BT#\
  244. XM0M)I`#Y(P4ZN_Q`B2D'ZZD1P!$ZN_\1@0B)*<`4R+0;^DFD`/E5!2,%.KO\0@
  245. XM(DI!^NHF<`E.KO_$(DHP+0@&,BT("))I`#Y504C!3J[_$")*0?KJ#7`$3J[_E
  246. XMQ$ZZ[:I.NOH&*VT`U`:(1>T`>$ZZZ\`K;0#,!O`K;0#0!O1F!DJM`,QG$"MM\
  247. XM`6`&U#MM`60&[&``]0A@`.R&+'@`!'``0>T*<$IM"J1F#B!M!K1.KOZ,2H!G`
  248. XM3"!`0^T&5'(S$MA1R?_\2D!G!B)`3J[^AD)M"J0@;0:T3J[^C$J`9R`@0$/M^
  249. XM"G!R,Q+84<G__")`3J[^A@@M``D*BF;84.T*I'`!3G5P`$YU89)G``"(("T&7
  250. XM:`@```-G!F$`\`A@Z@@```AG"DZZ]KA.NNS@8-H(```)9@`"\@@```IG)@QM+
  251. XM`&`&;&3$#&T`1`9L9A`P+09NP'P``V<&3KKLHF"L3KKLK&"F"```!F<*80#W[
  252. XM7F$`^#!@E@@```5G"F$`]TYA`/>,8(8(```/9PA.NOC@8`#_>F``_W9*K0:(D
  253. XM9@P@;0:T3J[^@&``_V1.NO6Z8`#_7$CG?_XF2`@K``(`(6<:(F@`!B`)9Q)%0
  254. XMZ`#42A%G!K4)9_A@!$H29P1.NNK$F\TD3BQX``0@/```"ZYR`4A!3J[_.DJ`4
  255. XM9R8J0"`K`5AF+B`\```!!'(!2$%.KO\Z2H!F'")-(#P```NN3J[_+BQJ`"J1+
  256. XMR$ZN_Z!P`&```TXJ@$GM!M1![``<*4@`)"M/".@K:@`F`6PK:@`J`7`K:@`NA
  257. XM`70K2@%X+$I.NN8R.T`&JCM!!JQ203M!!JXK2P%H0>T`!#`\`6,0VU'(__Q!V
  258. XM[0`F0^T&D'`(,MAF!C-\``'__E'(__1P`S+89@8S?``#__Y1R/_T.VT!9@?VP
  259. XM(&T`"D/M!0P@"&<$$MAF_`@M``<`)6<``)9*K0#,9@A*K0#09P``B"QX``0@$
  260. XM/````01R`4A!3J[_.BM``8!G/BQM`6Q![04,(@AT_DZN_ZPK0`%\9R@B`"0MU
  261. XM`8!.KO^:2H!G&B!M`8#0_`"$0^T`9+.(9@JSB&8&LXAF`F`,0>T`!"QM`7A.&
  262. XMNNE(+&T!;"(M`7QG!$ZN_Z8L>``$(FT!@"`)9PH@/````01.KO\N(&T`#D/MP
  263. XM!9`@"&<$$MAF_$'M`'Q#[06P$MAF_$'M`)Q#[070$MAF_$7M`+Q![0-P<`,P<
  264. XMFC%:``30_`!T4<C_]#MM`!X'!#MM`"`(#F82.WP`#`@.""T``P`E9P1=;0@.=
  265. XM.VT`'`<&.VT`'`@00?KH!D/M".QP#C+84<C__$'ZY\TK2`CZ0^T)"D7M"/Y"W
  266. XM0#(\`*!!^N?&=%!.N@'20?KGPW1)""T`!``E9@21R'0`3KH!O$'ZY[IT3$ZZU
  267. XM`;).NO<@3KK[,DZZ_.XL;0%PD<A.KO^@0BT%D&`V""T``P`E9S)#[060(&T'@
  268. XMZB`(9R(K:``&`'0@;0;@(`AG%-#\``P2V&;\0?KF<E.)$MAF_&`$0BT%D"YM@
  269. XM".A)[0?>3KKGZ$GM!M0(+0`"`"5G#@@M``@`)&<@2JT&B&<:3KKGRDZZYXXL3
  270. XM>``$(E4@/````01.KO\N0I4K50%<*VT&B`#4*VT&U`%@.VT&[`%D*VT&\`#,7
  271. XM*VT&]`#0*VT&W`!X.VT']@%F1>T`O$'M`W!P`S30-.@`!-#\`'11R/_T("T&E
  272. XMC&<2+&T!<"!`3J[_RB!M!HQ.KO^X<`!*+0609@Y%[``(3KKG($*M`'A@-D'MI
  273. XM!0PB;0`*(`EG!!+89OQ![060(FT`#B`)9P02V&;\0>T%#$/M!9`D;0`2(`IG"
  274. XM!$ZZZMAP`2\`0>T`!")M`6@P/`%C$MA1R/_\+'@`!")-(#P```NN3J[_+B`?Z
  275. XM3-]__DYU2.?`0B`(9B@L>``$D\E.KO[:($`,*``-``AF""!H`+@@"&X,3-]"0
  276. XM`S-\``$`+DYU3-]"`S-\``\`+B!H`"XC2``>3G5(YW^>?@$S1P`F,T<`*#-!#
  277. XM``@S?``*``HS?`!2``P30@`:9P8`:0`$``PS0``&T'P`"B2)1=$C2``N0>D`"
  278. XM(B-(`!+2_``V3-]Y_DYU3KKBKA%M!J4`5$YU3KKBE!%M!JD`,!%M!I\`4$YUQ
  279. XM`'0`$``Z`!``'0`0``X`$``.``@``0`"``(``@`$``(`"``"``@`!"`M(%!AP
  280. XM;&5T=&4@+2``($-O<'D@`"!3=V%P(`!3<')E860`(%5N9&\@`"`@3VL@(`!#S
  281. XM86YC96P`4B`@1R`@0@!(("!3("!6`)[\`!P@3R)/<@U"65')__P@@&$&WOP`U
  282. XM'$YU2.=__BX0+"@`!"I.(#P```1F<@%(02QM`").KO\Z*$!*@&<``G0L34'L`
  283. XM`#!T`'8$>`!Z`B"L`!(I2``2<!AR.$ZN_W8Q?``$`"PQ?/__`#`Q?!$1`#0Q"
  284. XM0P`$,7P`+0`&,40`)C%\``$`2C%\`!``1C%\``H`2!%\``$`4#%\3B``5M#\7
  285. XM`%C6?``:4D11S?^F(&T`-D/H`$PI20!\0^@`8"E)`-1#Z`!T*4D!+$'L`3A#]
  286. XM^O[Z1]1P5G(O=`5V`TZN_W`Q0P`F4D->2=#\`&11RO_N<%S0;`%`.4`!H#E`[
  287. XM`F@Y0`,P<#70;`%".4`"!CE``FIP]'((.4`"SH-L`M0Y0`,R@VP#.'!JT&P![
  288. XM0-!L`4`W0``$-WP`9P`&%WP``P`(%WP``@`)0?K^=B=(`!HG?``#$`8`#B=\Y
  289. XM```$>``*($8B2TZZ_80@2W``<@!.KO_B+&T`*DZN_S0F0$J`9P`!&"!K`"YP7
  290. XM`!`H`+VP?``%8P)P!7(!X6G00-!`.4`$6$C!*4$$5+Y!900^`5-')`!#^OWZ6
  291. XMY$I30M1"U$(Y<2``!%)#Z``L*4D$6B!H`#`I2`1B(&@`!"E(!%Y#[`/$1>P$/
  292. XM!&`$,M`TV%')__IA``7^?/]A``1X>@`L;0`B(&L`5DZN_H`@:P!63J[^C")`>
  293. XM($!%[`.0<!DTV%'(__PD24ZN_H8@+`.D"````V<Z2@5F:&$``KQ*0&O`/@`@H
  294. XM+`1$(BP$2"0L`[0F+`.X*4($1"E#!$@L;0`J3J[_FDI`9YJ^1F:64,5@D@@`_
  295. XM``9G"F$``=)*`&LD8(((```%9PAA``(.8`#_=@@```IG"F%&2@!K"&``_V9@T
  296. XM`/]B($L@"&<(+&T`*DZN_[@B3"`)9PX@/```!&8L;0`B3J[_+C`'3-]__DYUQ
  297. XM(&P$6B`L!%0L;0`N3N[_0'``,"P#J`B```=F'D'Z`#9A'#`L`Z@R+`.J(&P#I
  298. XMK"Q-3J[_1D'Z`%)A!'``3G4B&&L0LD!G!%A(8/1/[P`$(%!.T$YU````10``I
  299. XM+SP```!$```O2@```$P``"].````30``+UX```!/```O<@```$X``"^`____U
  300. XM_P```%(``"^<````<@``+YX```!'```OH````&<``"^B````0@``+Z0```!B@
  301. XM```OI@```&,``"^H````0P``+Z@```!U```OJ@```%4``"^J````>```+[H`&
  302. XM``!8```ON@```',``"^\````4P``+[S_____0^P#Q&$`_OYP_W[_3G5P_TYU-
  303. XM,`=(P)!L!%)J.-"L!%1@,C`'2,#0;`12L*P$5&TDD*P$5&`>,`=(P%-`:A;0C
  304. XMK`148!`P!TC`4D"PK`14;020K`14/`<^`&$``E1P`$YU3G5.=4YU3G5.=4YU[
  305. XM3G5#[`0$80#^D&$``KIP`$YU3G5.=4CG`,(@;`.L,B@`)K)\``=F!'#_8#"R[
  306. XM?``(9A)#[`/$80#^8&$``HIP_W[_8!BR?``&9@Q#[`0$80#^2&$``G(Y001,E
  307. XM<`!,WT,`3G5(Y__^)&P#K'``,"H`,(#\$1$*0``/L&H`5F<D-4``5B!*3KH!V
  308. XMYC`',BP`AC0L`-XV+`$V(&P$6BQM`"Y.KO[@+&T`+DZN_O)**@`-:[I,WW__E
  309. XM3G4P!B!L!&(L;0`N3N[]NDCG?/X,;`!H`ZAF``#V3*P``P.PD'P`4FT``.BP&
  310. XM?`!N;@``X))\``QM``#8LGP`'FX``-`T+`180?KZ;(#P(`""\"`"0?KZ=,+P]
  311. XM(`#003P'/@`P+`1,9P``FF$``H2P?``%9T"P?``#9@QAAC(`,`=A``#`8'RP\
  312. XM?``$9G9A`/]T.4`$3C`'80#_;#E`!%`R+`1.,`=A``"<,BP$4#`&80``DF!.X
  313. XM2.?__KQ';0+/1C\&GD8Z!R1L!%[<1M3&WD='\G``.`5@(B!/74\\$CX383IA.
  314. XM.&$V3)\`#C`7T$0@;`1:+&T`+DZN_N!1S/_<5$],WW__0FP$3&$``(8P!TS?Y
  315. XM?SY.=7#_3-]_/DYU,`8R!\!\``_"?``/DD##Q-)!:P3216`"DD7B08/%TD`QZ
  316. XM`>A&Z$=.=4CG\,`T`38!X$GH2B!L!%HL;0`N3J[^X$S?`P].=0`$``P`30`A0
  317. XM2.?PPB)K`#(L;0`N3J[^JD'Z_^9,D``/(FL`,DZN_LY,WT,/3G5(Y__^OD9GT
  318. XM'$I&:P8P!F$``,0P![!\`"!E`G``8;QA``"T86!,WW__3G5(Y\+J*$A"IR1/8
  319. XM0?H!KC\`(D\L34ZN_\HB:P`R,"P`!%A`,BP`!EE!+&T`+DZN_Q`B:P`R<`%.=
  320. XMKOZ>(FL`,G`!3J[^JD'O``)P`B)K`#).KO_$7$],WU=#3G4@;`1>,`?00#`P(
  321. XM``!R`D'L`.!A#.A(D/P`6%')__9.=4CG__[`?``/,4``5DZZ_W@*0``/P/P1W
  322. XM$3%``#`L;0`J(DN5RG`!3J[^4$S??_].=4CG__X^`"QM`"XB:P`R'"D`''`#L
  323. XM3J[^GCHL!%A!^OA*.#!0`'``,`>`Q#(`-`3$P#`'D$)!^O@>P/!0`,+P4`+06
  324. XM?`!1TGP`"R)K`#(8*0`@`&D``0`@-``V`=1P4`#6<%`"+$U.KO^@4D!205-"U
  325. XM4T-.KO^@(FL`,A-$`"!P`!`&+&T`+DZN_IY,WW__3G5(Y\#"(BP$5"!L!%Y#`
  326. XM[`0$8`(RV%')__Q,WT,#3G5(Y__^/"P$6$7Z][+4QCXJ``)Z#'8`+&T`+F`^F
  327. XM>%(\$F`P,`,B:P`R3J[^JB\#,`0R!30$-@74:O_LUFK_[E5"54,B:P`R3J[^,
  328. XMSB8?V&K_[%)#4<[_SMIJ_^Y1S__`3-]__TYU)3)D`$CG?_X2$&<``)*R`F<`:
  329. XM`(P,$``C9@P,*``_``%F!%1(8`@,$``J9BI22`P0`"IG^`P0`"-F"`PH`#\`4
  330. XM`6?@$A!G5+("9U!*$6=(8;1F2%))8/0,$``_9@I*&6<V4DAAH&!`#!``(V88/
  331. XM4D@2&&<DPCP`WV&,9B`0&<`\`-^R`&?R$!@2&<`\`-_"/`#?L@!G`/]T<`!@5
  332. XM#'`!8`A*$5?`1$!(@$S??_Y.=4CG?_[!21(09Q9T?+("9Q!A`/]&9@H2&&<.S
  333. XML@)F^&#F<`%,WW_^3G5P`&#V2.<__C0!Q,`F`$A#*`%(1,#$PL/&Q$A`2$$@)
  334. XM0]#`T,%"0$)!U(!D`E*(U(%D`E*((@@@`DS??_Q.=6'$/P`P`4A`2E]J`E*`+
  335. XM3G5(YW_^)`!"0DA"A,%(0$A",`)(0(#!-``@`DS??_Y.=4CG__XF2"`3,BL`>
  336. XM"$C!888N`"P'("L`!)"K``IO``$0(&L`#B!H`")R`#(H``1AH"0`,BL`"$C!3
  337. XM3KK_7"('DH`F`6<``.I$@6L"4(%9@2`!;`)$@"H!<@5AAB(`2H5L`D2!."L`6
  338. XM",CK``PJ!.2-F(4Z*P`(2,68A;*$;@9$@;*$;Q8F@IZ#(&L`$DCG__Y.D$S??
  339. XM?_]@`/]\1('>@2\!)`<F!DJ7:@PR*P`(4T%(P=2!UH$@`C(K``A.NO\F(@`O.
  340. XM`#`K``A(P$ZZ_LXB`"`?DH=(Y\``(`(R*P`(3KK_!"0`(`-.NO[\)@!,WP`#7
  341. XMEH)L(D2#)"L`"I2#T()(Y\``(`(R*P`(2,%.NOZ.)`!,WP`#TH(D'TCG__Y(?
  342. XMY_``(&L`&DZ0WOP`$$S??_]@`/[F(`<R*P`(3KK^JB:`(&L`%B0(9PI(Y__^]
  343. XM3I!,WW__+PXL;@`N3J[^\BQ?(&L`#DHH``UK`/ZP3-]__TYU``````/L````/
  344. XM/0`````````&````"@```!(````6````&@```(0```"(````C````)````"4+
  345. XM````F````)P```"@````I````*@```"L````L````+0```"X````O````,``D
  346. XM``#$````R````,P```#0````U````-@```#<````X````.0```#H````[```(
  347. XM`/````#T````^````/P```$````!!````0@```$>```!.```+I@``"Z@```N!
  348. XMJ```+K```"ZX```NP```+LP``"[4```NW```+N0``"[L```N]```+OP``"\$+
  349. XM```O#```+Q0``"\<```O)```+RP``"\T`````````_(```/J`````````_(`Q
  350. X+``/K`````0```_(<`
  351. X``
  352. Xend
  353. Xsize 14276
  354. END_OF_FILE
  355. if test 20030 -ne `wc -c <'req.library.uu'`; then
  356.     echo shar: \"'req.library.uu'\" unpacked with wrong size!
  357. fi
  358. # end of 'req.library.uu'
  359. fi
  360. if test -f 'reqbase.i' -a "${1}" != "-c" ; then 
  361.   echo shar: Will not clobber existing file \"'reqbase.i'\"
  362. else
  363. echo shar: Extracting \"'reqbase.i'\" \(15673 characters\)
  364. sed "s/^X//" >'reqbase.i' <<'END_OF_FILE'
  365. X
  366. X; reqlibrary.i (c) 1988/1989 reserved by Colin Fox and Bruce Dawson */
  367. X
  368. X    IFND    REQ_LIBRARY_I
  369. X
  370. XREQ_LIBRARY_I    SET    1
  371. X
  372. X        INCLUDE    "intuition/intuition.i"
  373. X
  374. X        INCLUDE    "libraries/dos.i"
  375. X        INCLUDE    "libraries/dosextens.i"
  376. X
  377. X        INCLUDE    "exec/memory.i"
  378. X        INCLUDE    "exec/initializers.i"
  379. X        INCLUDE    "exec/alerts.i"
  380. X
  381. XReqVersion    EQU    1
  382. X
  383. X
  384. XPairsSize    EQU    20
  385. X
  386. X STRUCTURE    GadgetBlock.,0        ;a boolean button style text gadget
  387. X    STRUCT    gb_Gadget,gg_SIZEOF
  388. X    STRUCT    gb_Border,bd_SIZEOF
  389. X    STRUCT    gb_Pairs,PairsSize
  390. X    STRUCT    gb_Text,it_SIZEOF
  391. X    LABEL    gb_SIZEOF
  392. X
  393. X STRUCTURE    StringBlock.,0        ;a string gadget
  394. X    STRUCT    sb_Gadget,gg_SIZEOF
  395. X    STRUCT    sb_Info,si_SIZEOF
  396. X    STRUCT    sb_Border,bd_SIZEOF
  397. X    STRUCT    sb_Pairs,PairsSize
  398. X    LABEL    sb_SIZEOF
  399. X
  400. X STRUCTURE    PropBlock.,0        ;a prop gadget
  401. X    STRUCT    pb_Gadget,gg_SIZEOF
  402. X    STRUCT    pb_Info,pi_SIZEOF
  403. X    STRUCT    pb_Image,ig_SIZEOF
  404. X    LABEL    pb_SIZEOF
  405. X
  406. X STRUCTURE    SliderBlock.,0        ;a slider (two arrows & a prop)
  407. X    STRUCT    slb_ArrowUpLt,gg_SIZEOF
  408. X    STRUCT    slb_ImageUpLt,ig_SIZEOF
  409. X    STRUCT    slb_ArrowDnRt,gg_SIZEOF
  410. X    STRUCT    slb_ImageDnRt,ig_SIZEOF
  411. X    STRUCT    slb_Prop,pb_SIZEOF    ;this is at the end for REFRESH GLIST purposes
  412. X    LABEL    slb_SIZEOF
  413. X
  414. X STRUCTURE    TwoImageBlock,0
  415. X    STRUCT    tib_Gadget,gg_SIZEOF
  416. X    STRUCT    tib_Image1,ig_SIZEOF
  417. X    STRUCT    tib_Image2,ig_SIZEOF
  418. X    LABEL    tib_SIZEOF
  419. X
  420. XATTITUDEB    EQU    16    ;Bit# of the attitude bit.
  421. X
  422. XHorizSlider    EQU    0<<ATTITUDEB    ;which way the slider stands
  423. XVertSlider    EQU    1<<ATTITUDEB    ;This is so that it bypasses all gadget flags.
  424. X
  425. X
  426. X
  427. X;         This structure is use with the TextRequester function.
  428. X
  429. X STRUCTURE TRStructure,0
  430. X    APTR    TR_Text            ;This is the message text, including printf() style formatting if desired.
  431. X    APTR    TR_Controls        ;This is the address of the parameter list, if printf() style formatting is used.
  432. X    APTR    TR_Window        ;This is an optional (zero if not used) pointer to a window on the screen you 
  433. X                    ;would like the requester to show up on.
  434. X    APTR    TR_MiddleText        ;If non-zero, this is the text for the gadget in the lower middle (returns 2).
  435. X    APTR    TR_PositiveText        ;If non-zero, this is the text for the gadget in the lower left hand corner (returns 1).
  436. X    APTR    TR_NegativeText        ;If non-zero, this is the text for the gadget in the lower right (returns 0).
  437. X    APTR    TR_Title        ;This is the title for the window.
  438. X    WORD    TR_KeyMask        ;This is the qualifier mask for the keyboard shortcuts.
  439. X                    ;Use $FFFF to allow any qualifiers (or none).
  440. X                    ;Zero means that no keyboard shortcuts are allowed.
  441. X    WORD    TR_textcolor        ;Color of the text.  Uses Color 1 if no Color specified.
  442. X    WORD    TR_detailcolor        ;Detail and block color, as in a NewWindow structure.  If
  443. X    WORD    TR_blockcolor        ;both are left zero, block pen will be set to 1.
  444. X    WORD    TR_versionnumber    ;Make SURE this is set to zero.
  445. X    LONG    TR_rfu1            ;Make SURE you leave these two zeroed also.
  446. X    LONG    TR_rfu2            ;Make SURE you leave these two zeroed also.
  447. X    LABEL    TR_SIZEOF
  448. X
  449. X;/* NOTE:
  450. X;
  451. X;    The  control  values  mentioned above are used if you choose to insert
  452. X;printf  style directives in your strings and should contain the address of
  453. X;a list of control parameters, usually on the stack.
  454. X;    */
  455. X
  456. X
  457. X
  458. X;         This structure is for use with the GetLong function.
  459. X
  460. XGLNODEFAULTB    EQU    0    ;Set this bit in the flags if you don't want a default
  461. X                ;value to show up in the get long string gadget.  For
  462. X                ;some things this is much better than having a zero
  463. X                ;show up.
  464. X
  465. XGLNODEFAULTM    EQU    1<<GLNODEFAULTB
  466. X
  467. X STRUCTURE    GetLongStruct,0
  468. X    APTR    gl_titlebar
  469. X    LONG    gl_defaultval
  470. X    LONG    gl_minlimit
  471. X    LONG    gl_maxlimit
  472. X    LONG    gl_result
  473. X    APTR    gl_window
  474. X    WORD    gl_versionnumber;    ;Make SURE this is set to zero.
  475. X    LONG    gl_flags;        ;Some, uh flags.  See above for bit definitions.
  476. X    LONG    gl_rfu2;        ;Make SURE you leave these two zeroed also.
  477. X    LABEl    gl_SIZEOF
  478. X
  479. X
  480. X
  481. X;         Remember,   if  you  don't  want  to  go  through  the  hassle  of
  482. X; initializing a ExtendedColorRequester structure, you can always just call
  483. X; ColorRequester  (as opposed to ExtendedColorRequester).  ColorRequester
  484. X; just  takes  a  single  parameter, in D0, the color that should start out
  485. X; being highlit.  It returns a single value, the color that was selected at
  486. X; the end.
  487. X
  488. X;         This structure is for use with the ExtendedColorRequester (_not_,
  489. X; the ColorRequester) function.
  490. X
  491. X STRUCTURE    ExtendedColorRequesterStruct,0
  492. X    LONG    ecr_defcolor        ;The color that is initially highlit.
  493. X    APTR    ecr_window        ;The window the 'requester' opens up in (zero normally).
  494. X    LONG    ecr_rfu1            ;Who knows what these will be used for,
  495. X    LONG    ecr_rfu2            ;but I'm sure we'll think of something.
  496. X    LONG    ecr_rfu3            ;Until then, just keep these zeroed.
  497. X    LONG    ecr_rfu4            ;Okay?
  498. X    LONG    ecr_rfu5
  499. X    LABEL    ecr_SIZEOF
  500. X
  501. X
  502. X
  503. X    IFND    DSIZE
  504. XDSIZE        EQU    130
  505. XFCHARS        EQU    30
  506. X    ENDC
  507. XWILDLENGTH    EQU    30
  508. X
  509. XFRQSHOWINFOB    EQU    0    ;Set this in Flags if you want .info files to show.  They default to hidden.
  510. XFRQEXTSELECTB    EQU    1    ;Set this in Flags if you want extended select.  Default is not.
  511. XFRQCACHINGB    EQU    2    ;Set this in Flags if you want directory caching.  Default is not.
  512. XFRQGETFONTSB    EQU    3    ;Set this in Flags if you want a font requester rather than a file requester.
  513. XFRQINFOGADGETB    EQU    4    ;Set this in Flags if you want a hide-info files gadget.
  514. XFRQHIDEWILDSB    EQU    5    ;Set this in Flags if you DON'T want 'show' and 'hide' string gadgets.
  515. XFRQABSOLUTEXYB    EQU    6    ;Use absolute x,y positions rather than centering on mouse.
  516. XFRQCACHEPURGEB    EQU    7    ;Purge the cache whenever the directory date stamp changes if this is set.
  517. XFRQNOHALFCACHEB    EQU    8    ;Don't cache a directory unless it is completely read in when this is set.
  518. XFRQNOSORTB    EQU    9    ;Set this in Flags if you DON'T want sorted directories.
  519. XFRQNODRAGB    EQU    10    ;Set this in Flags if you DON'T want a drag bar and depth gadgets.
  520. XFRQSAVINGB    EQU    11    ;Set this bit if you are selecting a file to save to.
  521. XFRQLOADINGB    EQU    12    ;Set this bit if you are selecting a file(s) to load from.
  522. X                ;These two bits (save and load) aren't currently used for
  523. X                ;anything, but they may be in the future, so you should
  524. X                ;remember to set them.  Also, these bits make it easier if
  525. X                ;somebody wants to customize the file requester for their
  526. X                ;machine.  They can make it behave differently for loading
  527. X                ;vs saving.
  528. X
  529. XFRQSHOWINFOM    EQU    1<<FRQSHOWINFOB
  530. XFRQEXTSELECTM    EQU    1<<FRQEXTSELECTB
  531. XFRQCACHINGM    EQU    1<<FRQCACHINGB
  532. XFRQGETFONTSM    EQU    1<<FRQGETFONTSB
  533. XFRQINFOGADGETM    EQU    1<<FRQINFOGADGETB
  534. XFRQHIDEWILDSM    EQU    1<<FRQHIDEWILDSB
  535. XFRQABSOLUTEXYM    EQU    1<<FRQABSOLUTEXYB
  536. XFRQCACHEPURGEM    EQU    1<<FRQCACHEPURGEB
  537. XFRQNOHALFCACHEM    EQU    1<<FRQNOHALFCACHEB
  538. XFRQNOSORTM    EQU    1<<FRQNOSORTB
  539. XFRQNODRAGM    EQU    1<<FRQNODRAGB
  540. XFRQSAVINGM    EQU    1<<FRQSAVINGB
  541. XFRQLOADINGM    EQU    1<<FRQLOADINGB
  542. X
  543. X
  544. X STRUCTURE    ESStructure,0        ;ExtendedSelectStructure
  545. X        LONG    es_NextFile    ;This must be the first element!
  546. X        WORD    es_NameLength    ;File name length, not including the terminating zero.
  547. X        WORD    es_Pad
  548. X        APTR    es_Node        ;Node that the user has extended selected.
  549. X        LABEL    es_SIZEOF
  550. X
  551. X;         When  using  extended  select,  the  directory pointer is required
  552. X; since  only  the  file  names  are stored in the frq_ExtendedSelect linked
  553. X; list.   When  not  using  extended select, you can either have frq_Dir and
  554. X; frq_File  point  be initialized, or you can have frq_PathName initialized,
  555. X; or  both.   frq_PathName will contain the concatenation of the file and
  556. X; directory chosen.
  557. X
  558. X STRUCTURE    .FileRequester,0
  559. X    UWORD    frq_VersionNumber        ;MUST BE ZERO!!!!!!!!!!!!!!!!!!
  560. X
  561. X    ;You will probably want to initialize these three variables.
  562. X    APTR    frq_Title            ; Hailing text
  563. X    APTR    frq_Dir                ; Directory array (must be DSIZE+1 characters long)
  564. X    APTR    frq_File            ; Filename array (must be FCHARS+1 characters long)
  565. X    ;If you initialize this variable then the file requester will place the complete path name in here on exit.
  566. X    APTR    frq_PathName            ; Complete path name array - (must be DSIZE+FCHARS+2 long)
  567. X    ;If you want the file requester to pop up on your custom screen, put one of your window pointers here.
  568. X    ;Or better yet, you can leave this field zeroed and put a pointer to one of your windows in the
  569. X    ;pr_WindowPtr field in your process structure.
  570. X    APTR    frq_Window            ; Window requesting or NULL
  571. X    ;Initialize these to the number of lines and columns you want to appear in the inner window that
  572. X    ;displays the file names.  If you leave these set to zero then default values will be used.
  573. X    UWORD    frq_MaxExtendedSelect        ; Zero implies a maximum of 65535, as long as FRQEXTSELECT is set.
  574. X    UWORD    frq_numlines            ; Number of lines in file window.
  575. X    UWORD    frq_numcolumns            ; Number of columns in file window.
  576. X    UWORD    frq_devcolumns            ; Number of columns in device window.
  577. X    ULONG    frq_Flags            ; Various - umm - flags.  See above for more info.
  578. X    UWORD    frq_dirnamescolor    ;These five colors will all default
  579. X    UWORD    frq_filenamescolor    ;to color one if you don't specify
  580. X    UWORD    frq_devicenamescolor    ;a color (ie; if you specify color zero).
  581. X    UWORD    frq_fontnamescolor    ;If you want color zero to be used, specify
  582. X    UWORD    frq_fontsizescolor    ;color 32, or some other too large number
  583. X                    ;which mods down to zero.
  584. X
  585. X    UWORD    frq_detailcolor        ;If both of these colors are specified as
  586. X    UWORD    frq_blockcolor        ;zero then the block pen will be set to one.
  587. X
  588. X    UWORD    frq_gadgettextcolor    ;The color for the text of the five boolean gadgets.  Defaults to 1.
  589. X    UWORD    frq_textmessagecolor    ;The color for the message at the screen top.  Defaults to 1.
  590. X    UWORD    frq_stringnamecolor    ;The color for the words Drawer, File, Hide and Show.  Defaults to 3.
  591. X    UWORD    frq_stringgadgetcolor    ;The color for the borders of the string gadgets.  Defaults to 3.
  592. X                    ;Unfortunately it is not possible to specify
  593. X                    ;the color of the actual text in an Intuition
  594. X                    ;string gadget.
  595. X    UWORD    frq_boxbordercolor    ;The color for the boxes around the file and directory areas.  Defaults to 3.
  596. X    UWORD    frq_gadgetboxcolor    ;The color for the boxes around the five boolean gadgets.  Defaults to 3.
  597. X
  598. X    STRUCT    frq_RFU_Stuff,36        ;This area, which is reserved for
  599. X                        ;future use, should all be zero.
  600. X
  601. X    STRUCT    frq_DirDateStamp,ds_SIZEOF    ; A copy of the cached directories date stamp.
  602. X                        ; There should never be any need to change this.
  603. X
  604. X    UWORD    frq_WindowLeftEdge;        ;These two fields are only used when the
  605. X    UWORD    frq_WindowTopEdge;        ;FRQABSOLUTEXY flag is set.  They specify
  606. X                        ;the location of the upper left hand
  607. X                        ;corner of the window.
  608. X
  609. X    UWORD    frq_FontYSize            ;These fields are used to return the selected
  610. X    UWORD    frq_FontStyle            ;font size and style, only applicable when the
  611. X                        ;font bit is set.
  612. X
  613. X    ;If you set the extended select bit and the user extended selects, the list of filenames will start from here.
  614. X    APTR    frq_ExtendedSelect        ; Linked list of ESStructures if more than one filename is chosen.
  615. X    ;All of the following variables you shouldn't need to touch.  They contain fields that the file
  616. X    ;requester sets and likes to preserve over calls, just to make life easier for the user.
  617. X    STRUCT    frq_Hide,WILDLENGTH+2        ; Wildcards for files to hide.
  618. X    STRUCT    frq_Show,WILDLENGTH+2        ; Wildcards for files to show.
  619. X    WORD    frq_FileBufferPos        ; Cursor's  position  and first
  620. X    WORD    frq_FileDispPos            ; displayed character number in
  621. X    WORD    frq_DirBufferPos        ; the three string gadgets.  No
  622. X    WORD    frq_DirDispPos            ; need  to initialized these if
  623. X    WORD    frq_HideBufferPos        ; you don't want to.
  624. X    WORD    frq_HideDispPos
  625. X    WORD    frq_ShowBufferPos
  626. X    WORD    frq_ShowDispPos
  627. X
  628. X;         The  following  fields are PRIVATE!  Don't go messing with them or
  629. X; wierd  things may/will happen.  If this isn't enough of a warning, go read
  630. X; the one in intuition.h, that should scare you off.
  631. X
  632. X    APTR    frq_Memory            ; Memory allocated for dir entries.
  633. X    APTR    frq_Memory2            ; Used for currently hidden files.
  634. X    APTR    frq_Lock            ; Contains lock on directories being read across calls.
  635. X    STRUCT    frq_PrivateDirBuffer,DSIZE+2    ; Used for keeping a record of which
  636. X                        ; directory we have file names for.
  637. X    APTR    frq_FileInfoBlock
  638. X    WORD    frq_NumEntries
  639. X    WORD    frq_NumHiddenEntries
  640. X    WORD    frq_filestartnumber
  641. X    WORD    frq_devicestartnumber
  642. X    LABEL    frq_SIZEOF
  643. X
  644. X
  645. X
  646. X
  647. X
  648. X
  649. X
  650. X;         This is used with the RealTimeScroll function.
  651. X
  652. X STRUCTURE    ScrollStruct,0
  653. X    ULONG    ss_TopEntryNumber    ;This is the ordinal number of the first
  654. X                    ;displayed entry.
  655. X    ULONG    ss_NumEntries        ;This is the total number of entries in
  656. X                    ;the list.
  657. X    UWORD    ss_LineSpacing        ;This is how many pixels high each entry is.
  658. X    ULONG    ss_NumLines        ;This is how many entries can be displayed simultaneously.
  659. X    APTR    ss_PropGadget        ;This is a pointer to the prop gadget being monitored.
  660. X
  661. X    APTR    ss_RedrawAll        ;This routine is used to redraw all of the
  662. X                    ;entries when the user moves far enough
  663. X                    ;that scrolling will take too long.
  664. X
  665. X    APTR    ss_ReadMore        ;An optional routine that is called when
  666. X                    ;the scroll routine is waiting for movement.
  667. X                    ;This allows reading of new data while real
  668. X                    ;time scrolling.
  669. X    APTR    ss_ScrollAndDraw    ;This routine is called when the data needs
  670. X                    ;to be scrolled and updated.  This routine is
  671. X                    ;passed four long parameters (on the stack and
  672. X                    ;in D0-D3) which are, respectively:
  673. X                    ;D0 - entry number of first line to be drawn.
  674. X                    ;D1 - pixel offset to draw first line at.
  675. X                    ;D2 - amount to scroll before doing any drawing.
  676. X                    ;D3 - number of lines of data to draw.
  677. X    WORD    versionnumber        ;Make SURE this is set to zero.
  678. X    LONG    rfu1            ;Make SURE you leave these two zeroed also.
  679. X    LONG    rfu2            ;Make SURE you leave these two zeroed also.
  680. X    LABEL    ss_SIZEOF
  681. X
  682. X
  683. X
  684. X
  685. X
  686. X STRUCTURE    Arrows,0
  687. X    STRUCT    ArrowUp,20
  688. X    STRUCT    ArrowDown,20
  689. X    STRUCT    ArrowLeft,18
  690. X    STRUCT    ArrowRight,18
  691. X    STRUCT    Letter_R,20
  692. X    STRUCT    Letter_G,20
  693. X    STRUCT    Letter_B,20
  694. X    STRUCT    Letter_H,20
  695. X    STRUCT    Letter_S,20
  696. X    STRUCT    Letter_V,20
  697. X    LABEL    chipstuff_SIZEOF
  698. X
  699. X; These are the positions relative to the rl_Images pointer.
  700. X;ie
  701. X;    MOVE.L    rl_Images(A6),A0
  702. X;    ADD.L    #ArrowLeft,A0        ;A0 now points at the left arrow.
  703. X
  704. X
  705. X STRUCTURE    ReqLib,LIB_SIZE
  706. X    APTR    rl_SysLib
  707. X    APTR    rl_DosLib        ;These must be kept in the same order,
  708. X    APTR    rl_IntuiLib        ;the library expunge code depends on it.
  709. X    APTR    rl_GfxLib        ;
  710. X    APTR    rl_SegList
  711. X    APTR    rl_Images        ;pointer to the arrow images.
  712. X    BYTE    rl_Flags
  713. X    BYTE    rl_Pad
  714. X    APTR    rl_ConsoleDev        ;for RawKeyToAscii
  715. X    APTR    rl_ConsoleHandle    ;so we can close the device later
  716. X    LABEL    MyLib_Sizeof
  717. X
  718. X
  719. X
  720. X
  721. X
  722. X
  723. X    LIBINIT
  724. X    LIBDEF    _LVOCenter
  725. X
  726. X    LIBDEF    _LVOSetSize
  727. X    LIBDEF    _LVOSetLocation
  728. X    LIBDEF    _LVOReadLocation
  729. X
  730. X    LIBDEF    _LVOFormat
  731. X
  732. X    LIBDEF    _LVOFakeFunction1    ;Old function.  Don't use.
  733. X    LIBDEF    _LVOFakeFunction2    ;Old function.  Don't use.
  734. X
  735. X    LIBDEF    _LVOFakeFunction3    ;Old function.  Don't use.
  736. X    LIBDEF    _LVOFakeFunction4    ;Old function.  Don't use.
  737. X
  738. X    LIBDEF    _LVOFileRequester
  739. X
  740. X    LIBDEF    _LVOColorRequester
  741. X
  742. X    LIBDEF    _LVODrawBox
  743. X
  744. X    LIBDEF    _LVOMakeButton
  745. X    LIBDEF    _LVOMakeScrollBar
  746. X
  747. X    LIBDEF    _LVOPurgeFiles
  748. X
  749. X    LIBDEF    _LVOGetFontHeightAndWidth
  750. X
  751. X    LIBDEF    _LVOMakeGadget
  752. X    LIBDEF    _LVOMakeString
  753. X    LIBDEF    _LVOMakeProp
  754. X
  755. X    LIBDEF    _LVOLinkGadget
  756. X    LIBDEF    _LVOLinkStringGadget
  757. X    LIBDEF    _LVOLinkPropGadget
  758. X
  759. X    LIBDEF    _LVOGetString
  760. X
  761. X    LIBDEF    _LVORealTimeScroll
  762. X
  763. X    LIBDEF    _LVOTextRequest
  764. X
  765. X    LIBDEF    _LVOGetLong
  766. X
  767. X    LIBDEF    _LVORawKeyToAscii
  768. X
  769. X    LIBDEF    _LVOExtendedColorRequester
  770. X
  771. X
  772. X
  773. XREQNAME    MACRO
  774. X    DC.B    'req.library',0
  775. X    ENDM
  776. X
  777. X; This macro will open the RequesterLibrary for you. At the end, A6 will
  778. X;contain the library and D0/A0 will be correct. (What dos passed you)
  779. X
  780. XOpenReq    MACRO
  781. X    BRA.S    opnrq
  782. X
  783. Xdname    DC.B    'dos.library',0
  784. Xrlibmsg    DC.B    'You need V1+ of '
  785. XReqName    REQNAME
  786. X    DC.B    10,13,0
  787. X;;;rliblng    EQU    *-rlibmsg
  788. Xrliblng    EQU    30
  789. X    DS.W    0
  790. X    EVEN
  791. X
  792. Xopnrq:
  793. X    MOVEM.L    d0/a0,-(sp)
  794. X    MOVE.L    4,A6
  795. X    LEA.L    ReqName,a1
  796. X    MOVEQ.L    #ReqVersion,d0
  797. X    SYS    OpenLibrary
  798. X    TST.L    d0
  799. X    BNE.S    itsokay
  800. X    LEA    dname,A1
  801. X    SYS    OpenLibrary
  802. X    TST.L    D0
  803. X    BEQ.S    1$
  804. X    MOVE.L    D0,A6
  805. X    SYS    Output
  806. X    MOVE.L    d0,d1
  807. X    BEQ.S    1$            ;No output. Phooey.
  808. X    MOVE.L    #rlibmsg,d2        ;Tell user he needs to find library.
  809. X    MOVE.L    #rliblng,D3
  810. X    SYS    Write
  811. X1$:    ADDQ    #8,sp
  812. X    RTS
  813. X
  814. Xitsokay:
  815. X    MOVE.L    D0,A6
  816. X    MOVEM.L    (SP)+,D0/A0
  817. X    ENDM
  818. X
  819. X
  820. X
  821. X    ENDC
  822. END_OF_FILE
  823. if test 15673 -ne `wc -c <'reqbase.i'`; then
  824.     echo shar: \"'reqbase.i'\" unpacked with wrong size!
  825. fi
  826. # end of 'reqbase.i'
  827. fi
  828. if test -f 'showoffreq.c' -a "${1}" != "-c" ; then 
  829.   echo shar: Will not clobber existing file \"'showoffreq.c'\"
  830. else
  831. echo shar: Extracting \"'showoffreq.c'\" \(13729 characters\)
  832. sed "s/^X//" >'showoffreq.c' <<'END_OF_FILE'
  833. X
  834. X#include    <intuition/intuition.h>
  835. X#include    <exec/libraries.h>
  836. X#include    <libraries/dosextens.h>        /* For the process structure definition. */
  837. X
  838. X
  839. X#include    <libraries/dos.h>
  840. X
  841. X#include    <libraries/reqbase.h>
  842. X
  843. X#ifdef    LATTICE
  844. X#include    <proto/all.h>
  845. X#else
  846. Xstruct Library *        OpenLibrary();
  847. Xstruct Screen *            OpenScreen();
  848. Xstruct Window *            OpenWindow();
  849. Xstruct Task *            FindTask();
  850. Xstruct Message *        GetMsg();
  851. X#endif
  852. X
  853. X
  854. X#define    WIDTH  640
  855. X#define    HEIGHT 200
  856. X#define    DEPTH  3
  857. X
  858. X#define    GADGETSTARTX    20
  859. X#define    GADGETSTARTY    60
  860. X
  861. X#define    IDCMP    (GADGETUP)
  862. X#define    FLAGS    (BACKDROP|SMART_REFRESH|ACTIVATE|BORDERLESS)
  863. X
  864. Xstruct IntuitionBase    *IntuitionBase;
  865. Xstruct GfxBase            *GfxBase;
  866. Xstruct ReqBase            *ReqBase;
  867. Xstruct Window            *window;
  868. Xstruct Screen            *screen;
  869. X
  870. Xstruct NewScreen ns =
  871. X    {
  872. X    0, 0,                    /* LeftEdge, TopEdge */
  873. X    WIDTH, HEIGHT, DEPTH,    /* Width, Height, Depth */
  874. X    0, 1,                    /* DetailPen, BlockPen */
  875. X    HIRES,                    /* ViewModes */
  876. X    CUSTOMSCREEN,            /* Type */
  877. X    NULL,                    /* Font */
  878. X    (UBYTE *)"Show off requester library.",    /* Title */
  879. X    NULL,                    /* Gadgets */
  880. X    NULL                    /* Bitmap */
  881. X    };
  882. X
  883. Xstruct NewWindow nw =
  884. X    {
  885. X    0,0,                    /* LeftEdge, TopEdge */
  886. X    WIDTH,HEIGHT,            /* Width, Height */
  887. X    -1,-1,                    /* DetailPen, BlockPen */
  888. X    IDCMP,                    /* IDCMPFlags */
  889. X    FLAGS,                    /* Flags */
  890. X    NULL,                    /* FirstGadget */
  891. X    NULL,                    /* CheckMark */
  892. X    NULL,                    /* Title */
  893. X    NULL,                    /* Screen */
  894. X    NULL,                    /* BitMap */
  895. X    79, 30,                    /* MinWidth, MinHeight */
  896. X    640, 200,                /* MaxWidth, MaxHeight */
  897. X    CUSTOMSCREEN            /* Type (of screen) */
  898. X    };
  899. X
  900. X
  901. Xstruct Process    *myprocess;
  902. XAPTR    olderrorwindow;
  903. X
  904. X
  905. X
  906. X    /* I declared this variable as global, rather than just declaring it as */
  907. X    /* a regular local variable because I need to make sure that all of the */
  908. X    /* fields are initialized to zero. */
  909. X    /* Also, the quit_cleanup routine needs to be able to access it to purge */
  910. X    /* the directory buffers which I have chosen to use (by setting the */
  911. X    /* FRQCACHINM flag. */
  912. X
  913. Xstruct FileRequester    MyFileReqStruct;
  914. Xchar filename[FCHARS];
  915. Xchar directoryname[DSIZE];
  916. X
  917. Xvoid ShowFileRequester()
  918. X    {
  919. X    char    answerarray[DSIZE+FCHARS];
  920. X
  921. X    answerarray[0] = 0;
  922. X
  923. X        /* Initialize the 'PathName' field so that the file requester will */
  924. X        /* construct a complete path name for me.  It will also put the two */
  925. X        /* parts of the answer (directory and file name) into the directory */
  926. X        /* file name which I also decided to supply it with.  Since the */
  927. X        /* directory and file name arrays are present, it will use their */
  928. X        /* initial contents as the initial file and directory.  If they aren't */
  929. X        /* present it will leave both blank to start. */
  930. X    MyFileReqStruct.PathName = answerarray;
  931. X    MyFileReqStruct.Dir = directoryname;
  932. X    MyFileReqStruct.File = filename;
  933. X
  934. X        /* The directory caching of this file requester is one of its nice */
  935. X        /* features, so I decided to show it off.  It is completely optional */
  936. X        /* though, so if you don't want it, don't set this flag.  If you do */
  937. X        /* want it, don't forget to call PurgeFiles() when you are done. */
  938. X    MyFileReqStruct.Flags = FRQCACHINGM;
  939. X
  940. X        /* Initialize a few colour fields.  Not strictly necessary, but */
  941. X        /* personally, I like having my files a different colour from my */
  942. X        /* directories. */
  943. X    MyFileReqStruct.dirnamescolor = 2;
  944. X    MyFileReqStruct.devicenamescolor = 2;
  945. X        /* I could also make it larger, pass it a file and/or directory */
  946. X        /* name, set the window title, set various flags and customize */
  947. X        /* in many other ways, but I wanted to show that it can be easily */
  948. X        /* used without having to fill in a lot of fields. */
  949. X    if (FileRequester(&MyFileReqStruct))
  950. X        SimpleRequest("You selected the file '%s'.", answerarray);
  951. X    else
  952. X        SimpleRequest("You didn't select a file.");
  953. X    }
  954. X
  955. X
  956. X
  957. Xvoid ShowColorRequester()
  958. X    {
  959. X    ColorRequester(1L);        /* Pass it the color you want to start out being highlit. */
  960. X                            /* It actually returns the colour that the user chose, but */
  961. X                            /* I'm not interested in that value. */
  962. X
  963. X        /* If you want to give more parameters to the colour requester, you can */
  964. X        /* call ExtendedColorRequester with the address of an ExtendedColorRequest */
  965. X        /* structure.  Currently the only additional parameter this lets you pass */
  966. X        /* is the address of the window the requester should appear in.  This can */
  967. X        /* normally be done more easily by specifying it in the pr_WindowPtr field */
  968. X        /* of your task structure. */
  969. X    }
  970. X
  971. X
  972. X
  973. Xvoid ShowSimpleText()
  974. X    {
  975. X    SimpleRequest(
  976. X"     SimpleRequest()  is  a  tiny bit of\n"
  977. X"glue  code  which  passes  a single text\n"
  978. X"string  (with  optional  printf()  style\n"
  979. X"formatting) to the TextRequest() routine\n"
  980. X"in  the  library.   The  SimpleRequest()\n"
  981. X"routine  can  be  easily modified to fit\n"
  982. X"your own peculiar purposes.");
  983. X    }
  984. X
  985. X
  986. X
  987. Xchar *yesno[] =
  988. X    {
  989. X    "no",
  990. X    "yes",
  991. X    };
  992. X
  993. Xvoid ShowTwoGadText()
  994. X    {
  995. X    short    result;
  996. X
  997. X    result = TwoGadRequest("Just testing the two gadget requester.");
  998. X    SimpleRequest("You responded with a '%s' to this requester.", yesno[result]);
  999. X    }
  1000. X
  1001. X
  1002. X
  1003. Xchar *response[] =
  1004. X    {
  1005. X    "You really should use it.",
  1006. X    "Excellent choice.  You have good taste.",
  1007. X    "Oh come one, make up your mind.\nYou won't regret choosing 'yes'.",
  1008. X    };
  1009. X
  1010. Xvoid ShowThreeGadText()
  1011. X    {
  1012. X    struct TRStructure    MyTextStruct;
  1013. X    short    result;
  1014. X
  1015. X    MyTextStruct.Text = "     Would you use the requester library\n"
  1016. X                        "in your programs?";
  1017. X        /* The Controls field doesn't actually have to be initialized, unless you */
  1018. X        /* are using printf() style formatting of the Text string. */
  1019. X    MyTextStruct.Window = 0;    /* This must be zero or a valid window pointer. */
  1020. X    MyTextStruct.MiddleText = "Perhaps...";
  1021. X    MyTextStruct.PositiveText = "Oh yeah, for sure!";
  1022. X    MyTextStruct.NegativeText = "Methinks not.";
  1023. X    MyTextStruct.Title = "Show off text requester.";
  1024. X    MyTextStruct.KeyMask = AMIGAKEYS;        /* Allow only keys together with the amiga */
  1025. X                                            /*  qualifiers to be used for keyboard shortcuts. */
  1026. X    MyTextStruct.textcolor = 1;
  1027. X    MyTextStruct.detailcolor = 0;
  1028. X    MyTextStruct.blockcolor = 1;
  1029. X    MyTextStruct.versionnumber = 0;
  1030. X    MyTextStruct.rfu1 = 0;
  1031. X    MyTextStruct.rfu2 = 0;
  1032. X    result = TextRequest(&MyTextStruct);
  1033. X    SimpleRequest(response[result]);
  1034. X    }
  1035. X
  1036. X
  1037. X
  1038. X    /* I declared this variable globally, rather than just declaring it as */
  1039. X    /* a regular local variable because I need to make sure that all of the */
  1040. X    /* fields are initialized to zero. */
  1041. X    /* Also, the quit_cleanup routine needs to be able to access it to purge */
  1042. X    /* the directory buffers which I have chosen to use (by setting the */
  1043. X    /* FRQCACHINM flag. */
  1044. X    /* I could have used the same structure I used for the file requester, */
  1045. X    /* but I decided not to, so that the two requesters could have separate */
  1046. X    /* directory caches. */
  1047. X
  1048. Xstruct FileRequester    MyFontReqStruct;
  1049. X
  1050. Xvoid ShowFontRequester()
  1051. X    {
  1052. X    char    fontname[FCHARS];
  1053. X    char    dirname[DSIZE];
  1054. X
  1055. X        /* You do have to tell the font requester what directory to look */
  1056. X        /* in, usually fonts:. */
  1057. X
  1058. X    strcpy(dirname, "fonts:");
  1059. X    fontname[0] = 0;
  1060. X
  1061. X        /* Tell the file requester to be a font requester. */
  1062. X        /* The directory caching of this file requester is one of its nice */
  1063. X        /* features, so I decided to show it off.  It is completely optional */
  1064. X        /* though, so if you don't want it, don't set the caching flag.  If you do */
  1065. X        /* want it, don't forget to call PurgeFiles() when you are done. */
  1066. X    MyFontReqStruct.Flags |= FRQGETFONTSM | FRQCACHINGM;
  1067. X
  1068. X    MyFontReqStruct.Dir = dirname;
  1069. X    MyFontReqStruct.File = fontname;
  1070. X        /* Initialize a colour field.  Not strictly necessary, but */
  1071. X        /* personally, I like having my fonts a different colour */
  1072. X        /* from the font size list. */
  1073. X    MyFontReqStruct.fontnamescolor = 2;
  1074. X    if (FileRequester(&MyFontReqStruct))
  1075. X        SimpleRequest("You selected the font '%s',\n"
  1076. X                      "size %d, style %d.", fontname, MyFontReqStruct.FontYSize, MyFontReqStruct.FontStyle);
  1077. X    else
  1078. X        SimpleRequest("You didn't select a font.");
  1079. X    }
  1080. X
  1081. X
  1082. X
  1083. X#define    TEXTLENGTH    75
  1084. X
  1085. Xvoid ShowGetText()
  1086. X    {
  1087. X    char    mybuffer[TEXTLENGTH];
  1088. X
  1089. X        /* Note that the buffer you pass to GetString must be initialized.  */
  1090. X        /* If you don't want any text to appear by default, just put a zero */
  1091. X        /* at the beginning of the array. */
  1092. X
  1093. X    strcpy(mybuffer, "The default text.");
  1094. X    if (GetString(mybuffer, "Type anything, then hit return.", (struct Window *)0L, 50L, (long)TEXTLENGTH))
  1095. X        SimpleRequest("I'll bet you typed:\n"
  1096. X                      "'%s'.", mybuffer);
  1097. X    else
  1098. X        SimpleRequest("You didn't enter anything!");
  1099. X    }
  1100. X
  1101. X
  1102. X
  1103. Xvoid ShowGetLong()
  1104. X    {
  1105. X    struct GetLongStruct    mygetlongstruct;
  1106. X
  1107. X    mygetlongstruct.titlebar = "Enter a number.";
  1108. X    mygetlongstruct.defaultval = 1234;
  1109. X    mygetlongstruct.minlimit = -100000;
  1110. X    mygetlongstruct.maxlimit = 100000;
  1111. X    mygetlongstruct.window = 0;            /* Must be zeroed or req.lib will use it as a window pointer. */
  1112. X    mygetlongstruct.versionnumber = 0;
  1113. X    mygetlongstruct.flags = 0;
  1114. X    mygetlongstruct.rfu2 = 0;
  1115. X    if (GetLong(&mygetlongstruct))
  1116. X        SimpleRequest("You entered the number '%ld'.", mygetlongstruct.result);
  1117. X    else
  1118. X        SimpleRequest("You didn't enter a number.");
  1119. X    }
  1120. X
  1121. X
  1122. X
  1123. Xvoid quit_cleanup(message)
  1124. Xchar *message;
  1125. X    {
  1126. X    if (window)
  1127. X        CloseWindow(window);
  1128. X    if (screen)
  1129. X        CloseScreen(screen);
  1130. X    if (ReqBase)
  1131. X        {
  1132. X        PurgeFiles(&MyFileReqStruct);    /* Only necessary if the FRQCACHINGM flag */
  1133. X        PurgeFiles(&MyFontReqStruct);    /* is set in the file requester structure. */
  1134. X        CloseLibrary(ReqBase);
  1135. X        }
  1136. X    if (GfxBase)
  1137. X        CloseLibrary(GfxBase);
  1138. X    if (IntuitionBase)
  1139. X        CloseLibrary(IntuitionBase);
  1140. X    if (message)
  1141. X        puts(message);
  1142. X    exit(0);
  1143. X    }
  1144. X
  1145. X
  1146. X
  1147. Xvoid _abort()
  1148. X    {
  1149. X    quit_cleanup("User abort requested.");
  1150. X    }
  1151. X
  1152. X
  1153. X
  1154. Xvoid bye()
  1155. X    {
  1156. X    myprocess->pr_WindowPtr = olderrorwindow;
  1157. X    quit_cleanup((char *)0);
  1158. X    }
  1159. X
  1160. X
  1161. X
  1162. Xstruct gadgetandfunction
  1163. X    {
  1164. X    char    *gadgettext;
  1165. X    void    (*functionpointer)();
  1166. X    };
  1167. X
  1168. Xstruct gadgetandfunction gadgetlist[] =
  1169. X    {
  1170. X        {
  1171. X        "Show the file requester.",
  1172. X        ShowFileRequester,
  1173. X        },
  1174. X        {
  1175. X        "Show the color requester.",
  1176. X        ShowColorRequester,
  1177. X        },
  1178. X        {
  1179. X        "Show a simple text requester.",
  1180. X        ShowSimpleText,
  1181. X        },
  1182. X        {
  1183. X        "Show a two gadget requester.",
  1184. X        ShowTwoGadText,
  1185. X        },
  1186. X        {
  1187. X        "Show a three gadget requester.",
  1188. X        ShowThreeGadText,
  1189. X        },
  1190. X        {
  1191. X        "Show the font requester.",
  1192. X        ShowFontRequester,
  1193. X        },
  1194. X        {
  1195. X        "Show the 'get text' requester.",
  1196. X        ShowGetText,
  1197. X        },
  1198. X        {
  1199. X        "Show the 'get number' requester.",
  1200. X        ShowGetLong,
  1201. X        },
  1202. X
  1203. X        {
  1204. X        "Exit the demo.",
  1205. X        bye,
  1206. X        },
  1207. X    };
  1208. X
  1209. X#define    NUMGADGETS    (sizeof(gadgetlist) / sizeof(struct gadgetandfunction))
  1210. X
  1211. Xstruct GadgetBlock    gadgetblocks[NUMGADGETS];
  1212. X
  1213. Xvoid main()
  1214. X    {
  1215. X    short    x, y, gadgetnum;
  1216. X    struct IntuiMessage    messagecopy, *message;
  1217. X    struct Gadget        *gadgetpointer;
  1218. X
  1219. X        /* First we do the usual opening up of libraries, pretty standard stuff. */
  1220. X
  1221. X    if (!(IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 33L)))
  1222. X        quit_cleanup("Requires 1.2 operating system.");
  1223. X
  1224. X    if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 33L)))
  1225. X        quit_cleanup("Couldn't open graphics.");
  1226. X
  1227. X    if (!(ReqBase = (struct ReqBase *)OpenLibrary("req.library", 0L)))
  1228. X        quit_cleanup("Couldn't open the req library.");
  1229. X
  1230. X        /* Then we open up a nice 640 by 200, three bitplane screen.  This demo */
  1231. X        /* can be easily modified to work on the workbench screen.  Simply */
  1232. X        /* take out the open screen command, and change the NewWindow Type field */
  1233. X        /* to WBENCHSCREEN.  All of the requesters will then open on the */
  1234. X        /* workbench screen. */
  1235. X
  1236. X    if (!(screen = (struct Screen *)OpenScreen(&ns)))
  1237. X        quit_cleanup("Couldn't open screen.");
  1238. X
  1239. X    for (gadgetnum = 0; gadgetnum < NUMGADGETS; gadgetnum++)
  1240. X        {
  1241. X        x = GADGETSTARTX + (gadgetnum & 1) * (WIDTH / 2);
  1242. X        y = GADGETSTARTY + (gadgetnum / 2) * 20;
  1243. X        LinkGadget(&gadgetblocks[gadgetnum], gadgetlist[gadgetnum].gadgettext, &nw, (long)x, (long)y);
  1244. X        gadgetblocks[gadgetnum].Gadget.GadgetID = gadgetnum;
  1245. X        }
  1246. X
  1247. X        /* Find the address of the last gadget added, the 'goodbye' gadget */
  1248. X        /* and adjust it so that it appears in the middle at the top. */
  1249. X    gadgetpointer = &gadgetblocks[NUMGADGETS-1].Gadget;
  1250. X    gadgetpointer->TopEdge = 20;
  1251. X    gadgetpointer->LeftEdge = (WIDTH - gadgetpointer->Width) / 2;
  1252. X
  1253. X    nw.Screen = screen;
  1254. X    if (!(window = (struct Window *)OpenWindow(&nw)))
  1255. X        quit_cleanup("Couldn't open window.");
  1256. X
  1257. X        /* Now we set the pr_WindowPtr field in our process structure to */
  1258. X        /* point at our window so that DOS requesters and requester library */
  1259. X        /* requestes will open up on our custom screen, instead of on the */
  1260. X        /* workbench screen. NOTE!!!!!  It is VERY important that you restore */
  1261. X        /* this variable before the program exits.  This is why I make a copy */
  1262. X        /* of the previous value before I change it.  IF YOU DON'T RESTORE IT */
  1263. X        /* when you exit, NASTY THINGS WILL HAPPEN!! (but only sometimes).  */
  1264. X        /* If you execute a program WITHOUT using the 'run' command and it */
  1265. X        /* sets the pr_WindowPtr to point at it's window, and then exits */
  1266. X        /* without restoring it, the next DOS requester for that process will */
  1267. X        /* try to come up on a screen that NO LONGER EXISTS - which will probably */
  1268. X        /* BLOW UP YOUR MACHINE!  The pr_WindowPtr is restored in the bye() */
  1269. X        /* routine. */
  1270. X
  1271. X    myprocess = (struct Process *)FindTask((char *)0);
  1272. X    olderrorwindow = myprocess->pr_WindowPtr;
  1273. X    myprocess->pr_WindowPtr = (APTR)window;
  1274. X
  1275. X        /* Now we enter our main processing loop.  All we do is wait for */
  1276. X        /* GADGETUP messages (the only kind the IDCMP port is set to */
  1277. X        /* receive) and call the function associated with each gadget */
  1278. X        /* that the user presses.  One of those gadgets is an exit */
  1279. X        /* gadget which calls the 'bye' routine, which frees up all */
  1280. X        /* resources and exits.  This is how this loop, which seems to */
  1281. X        /* never terminate, terminates. */
  1282. X
  1283. X    while (TRUE)
  1284. X        {
  1285. X        WaitPort(window->UserPort);
  1286. X        message = (struct IntuiMessage *)GetMsg(window->UserPort);
  1287. X        messagecopy = *message;
  1288. X        ReplyMsg((struct Message *)message);
  1289. X        gadgetnum = ((struct Gadget *)(messagecopy.IAddress))->GadgetID;
  1290. X
  1291. X        gadgetlist[gadgetnum].functionpointer();
  1292. X        }
  1293. X    }
  1294. END_OF_FILE
  1295. if test 13729 -ne `wc -c <'showoffreq.c'`; then
  1296.     echo shar: \"'showoffreq.c'\" unpacked with wrong size!
  1297. fi
  1298. # end of 'showoffreq.c'
  1299. fi
  1300. echo shar: End of archive 2 \(of 3\).
  1301. cp /dev/null ark2isdone
  1302. MISSING=""
  1303. for I in 1 2 3 ; do
  1304.     if test ! -f ark${I}isdone ; then
  1305.     MISSING="${MISSING} ${I}"
  1306.     fi
  1307. done
  1308. if test "${MISSING}" = "" ; then
  1309.     echo You have unpacked all 3 archives.
  1310.     rm -f ark[1-9]isdone
  1311. else
  1312.     echo You still need to unpack the following archives:
  1313.     echo "        " ${MISSING}
  1314. fi
  1315. ##  End of shell archive.
  1316. exit 0
  1317. -- 
  1318. Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
  1319. Mail comments to the moderator at <amiga-request@uunet.uu.net>.
  1320. Post requests for sources, and general discussion to comp.sys.amiga.
  1321.